<?php

namespace app\test512\controller;


use app\test512\model\Node;
use app\test512\model\U_a;
use app\test514\controller\Common;
use OSS\OssClient;
use think\cache\driver\Redis;
use think\Controller;
use think\Request;
use app\test512\model\Sign as SignModel;
use think\Validate;

class Sign extends Controller
{



    public function OSS()
    {
        $config = config('aliyun_oss');//获取配置
        //实例化oss并传递参数
        $oss = new OssClient($config['KeyId'],$config['KeySecret'],$config['Endpoint']);

        return $oss;//返回
    }
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        if (session('userInfo')==null)
        {
            return redirect('admin/login/login');
        }
        //查询数据
        //$data = SignModel::paginate(4);

        //实例化



        return view('admin/index', compact('data'));
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //添加表单页面
        return view('admin/create');
    }

    /**
     * 保存新建的资源
     *
     * @param \think\Request $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        $data = $request->post();
        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('images');

        // 移动到框架应用根目录/uploads/ 目录下
        $info = $file->move( 'uploads');

        if($info) {
            // 成功上传后 获取上传信息

            // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
            $img = $info->getSaveName();

        }
        $obj = new TPOSS();
        $rest = $obj->uploadOssFile('yw666',$img);

        $data['images']=$rest['info']['url'].'?x-oss-process=style/400-300';
        //添加数据
         SignModel::create($data,true);

        return redirect('test512/sign/index');
    }

    /**
     *Method imgeFile
     * @param Request $request
     *user:大飞
     *time:2021/5/12 11:03
     */
    //图片上传
    public function imgeFile(Request $request)
    {
        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('file');
        // 移动到框架应用根目录/uploads/ 目录下
        $info = $file->move( 'uploads');
        if($info){
            // 成功上传后 获取上传信息

            // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
            $img =  $info->getSaveName();

        }else{
            // 上传失败获取错误信息
            echo $file->getError();
        }
       $obj = new TPOSS();
        $data = $obj->uploadOssFile('yw666',$img);

        $data['info']['url'].'?x-oss-process=style/400-300';

//        $file = $request->file('file');
//        $info = $file->move('uploads');
//        if ($info) {
//            //移动成功
//            $url = $info->getSaveName();//获取图片链接
//            //将图片位置拼接成图片链接
//            $urlPath = 'uploads/'.$url;
//
//            //获取实例化OSS
//            $ossClient = $this->OSS();
//
//            $oss_path = $ossClient->uploadFile('yw666',$urlPath,$info->getPathname());
//
//            //获取处理后的图片链接,拼接自己设置的规则
//            $data = $oss_path['info']['url'].'/400-300';
//        }
        return $data;
    }

    /**
     * 查看文章详情
     *Method read
     * @param $id
     *user:大飞
     *time:2021/5/12 19:41
     */
    public function read($id)
    {
        //开启redis服务
        $redis = new Redis();
        $ip = get_client_ip();
        $res = U_a::where('u_id',session('userInfo.id'))->where('a_id',$id)->find();

        //判断Redis里是否有
        $visit_ip = $redis->EXISTS('IP'.$ip);

        //没有 设置
        if ($visit_ip == 0){
            //设置可以
            $redis->set('IP'.$ip,1);
            //设置过期时间
            $redis->EXPIRE('IP'.$ip,60);
        }else{
            //获取请求变量
            $num = $redis->incr('IP'.$ip);
            //判断访问次数大于5的给出提示返回上一层
            if ($num>5){
                $this->error("请求太过频繁!请在60秒后重试");
            }
        }



        if ($redis->get('read'.$id)==null){

            $One = SignModel::where('id',$id)->find();


            $redis->set('read'.$id,$One);


            return view('admin/read',compact('One','res'));
        }else{
            $One = $redis->get('read'.$id);
            return view('admin/read',compact('One','res'));
        }



    }

    /**
     * 显示编辑资源表单页.
     *
     * @param int $id
     * @return \think\Response
     */
    public function edit($id)
    {
        $Onedata = SignModel::where('id', $id)->find();

        return view('admin/edit', compact('Onedata'));
    }

    /**
     * 保存更新的资源
     *
     * @param \think\Request $request
     * @param int $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        $data = input();

        SignModel::update($data, true);

        return redirect('test512/sign/index');
    }

    /**
     * 删除指定资源
     *
     * @param int $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //开启redis服务

        $redis = new Redis();
        SignModel::destroy($id);
        $redis->hdel('test512', 'field1');

        return redirect('test512/sign/index');
    }


    public function diannum($id)
    {
        //开启redis服务
        $redis = new Redis();
        $u_id = session('userInfo.id');

        $data['u_id']=$u_id;
        $data['a_id']=$id;
        SignModel::where('id',$id)->setInc('s_zan');
        //先查询
        $res=U_a::where('u_id',$u_id)->where('a_id',$id)->find();
        if ($res){
            return json(['code'=>400,'msg'=>'已经点过赞了','data'=>'']);
        }else{
            //添加进去
            U_a::create($data,true);
            return json(['code'=>200,'msg'=>'点赞成功!','data'=>'']);
        }


    }
}
